﻿using System;
using System.Data;
using System.Web.UI;
using System.Web.UI.WebControls;
using Business;
using Model;

namespace Gui.Web.Reportes
{
    public partial class VentasTotales : Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Page.IsPostBack) return;

            CargarMeses(MesInicio, 0);
            CargarMeses(MesFin, DateTime.Now.Month - 1);

            var fechas = new FechaBusiness();
            Anios.DataSource = fechas.ObtenerAnios().Anios;
            Anios.DataBind();
            Anios.SelectedValue = DateTime.Now.Year.ToString();

            ActualizarVentas();
        }

        private void CargarMeses(ListControl listaMeses, int mesSeleccionado)
        {
            var meses = new FechaBusiness();
            listaMeses.DataSource = meses.ObtenerMeses().Meses;
            listaMeses.DataBind();
            listaMeses.SelectedIndex = mesSeleccionado;
        }

        private void ActualizarVentas()
        {
            var anio = Convert.ToInt32(Anios.SelectedItem.Value);
            var mesInicio = Convert.ToInt32(MesInicio.SelectedItem.Value);
            var mesFin = Convert.ToInt32(MesFin.SelectedItem.Value);
            var ventas = new VentasBusiness();

            ActualizarTablasDeVentas(ventas.ObtenerVentasTotales(anio, mesInicio, mesFin), DatosVentasTotales,
                TituloVentasTotales, ventas.TotalVentas);
            ActualizarTablasDeVentas(ventas.ObtenerVentasContado(anio, mesInicio, mesFin), VentasContadoPorGrifero,
                TituloVentasContado, ventas.TotalVentasContado);
            ActualizarTablasDeVentas(ventas.ObtenerVentasCredito(anio, mesInicio, mesFin), VentasCreditoPorGrifero,
                TituloVentasCredito, ventas.TotalVentasCredito);
        }

        private void ActualizarTablasDeVentas(DataTable datosDeVentas, BaseDataBoundControl tablaParaActualizar, ITextControl tituloLabel, double totalVentas)
        {
            tablaParaActualizar.DataSource = datosDeVentas;
            tablaParaActualizar.DataBind();
            tituloLabel.Text = string.Format("Total S/. {0:0.00}", totalVentas);
        }

        protected void MesFin_SelectedIndexChanged(object sender, EventArgs e)
        {
            ActualizarVentas();
        }

        protected void MesInicio_SelectedIndexChanged(object sender, EventArgs e)
        {
            ActualizarVentas();
        }

        protected void Anios_OnSelectedIndexChanged_SelectedIndexChanged(object sender, EventArgs e)
        {
            ActualizarVentas();
        }
    }
}